const path = require('path')
const HTMLWebpackPlugin = require('html-webpack-plugin')
const {CleanWebpackPlugin} = require('clean-webpack-plugin')
const { EnvironmentPlugin } = require('webpack')
module.exports = {
  // 指定入口文件
  entry:"./src/index.ts",
  
  // 打包后文件所在的目录
  output:{
    // 指定打包后的目录
    path:path.resolve(__dirname,'dist'),
    filename:"bundle.js",
    environment:{
      arrowFunction:false
    }
    
  },
  
mode: 'production', // 设置mode
  module:{
    rules:[
      {
        // test指定的是规则生效的文件
        test:/\.ts$/,
        // 要使用的loader
        use:
        [{
          // 指定加载器
          loader:"babel-loader",
          // 设置babel
          options:{
            // 设置预定义的环境
            presets:[
              [
                // 指定环境的插件
                "@babel/preset-env",
                // 配置信息
                {
                  // 要兼容的浏览器
                  targets:{

                    "chrome":"58",
                    "ie":"11"
                  },
                  // 指定corejs的版本
                  "corejs":"3",
                  // 使用corejs的方式“usage"标识按需加载
                  "useBuiltIns":"usage"
                }
              ]
    ]
          }},


          'ts-loader'
        ],
        // 要移除的文件
        exclude:/node-modules/
      },



      // 设置less文件的处理
      {
        test:/\.less$/,
        use:[
          'style-loader',
          'css-loader',
          // 引入postcss
          {
            loader:'postcss-loader',
            options:{
              postcssOptions:{
                plugins:[
                  [
                    "postcss-preset-env",
                    {
                      browsers:'last 2 versions'
                    }
                  ]
                ]
              }
            }
          },
          'less-loader'
        ]
      }
    ]
  },
  // 配置webpack插件
  plugins:[

    new CleanWebpackPlugin(),

    new HTMLWebpackPlugin({
      // title:'自定义的title'

      // 设置html模板
      template:'./src/index.html'
    }),

  ],
  resolve:{
    extensions:['.ts','.js']
  }
  
}